<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>继承</title>
</head>

<body>
    <script>
        //人类（name，age）  工程师类（name，age，toch，salary）
        //工程师类是人类中的一种
        function person(name, age) {
            this.name = name;
            this.age = age;
        }

        person.prototype.eat = function () {
            console.log('干饭！');
        }

        function engineer(name, age, toch, salary) {
            //继承父类属性和方法，使用call调用父类的构造函数
            person.call(this, name, age);
            this.toch = toch;
            this.salary = salary;
        }

        //子类继承父类方法，设置子类构造函数的原型对象是一个父类的对象
        engineer.prototype = new person();
        //修改子类构造函数的原型对象后，原型对象的构造函数属性指回子类的构造函数
        //不要改变构造函数、原型对象、实例对象的三角关系
        engineer.prototype.constructor = engineer;
        //在设置子类原型对象后，再定义类的方法
        engineer.prototype.work = function () {
            console.log('工作');
        }

        var p = new person('xiao m', '14');
        var e = new engineer('da hua', '23', 'ok', '1000');
    </script>
</body>

</html>